package javase.CollectionAndMap.list;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

/**
 * ArrayList实现类
 * 1.基于数组的数据结构，在内存空间是连续的
 * 2.查询快，增删慢
 * 3.线程不安全
 *
 * ArrayList
 * 1.构造方法
 *   1.1 public ArrayList()
 *   1.2 public ArrayList(Collection<? extends E> c)
 * 2.常用API方法
 *   public boolean add(E e)
 *   public E get(int index)
 *   public E set(int index, E element)
 *   public E remove(int index)
 *   public Iterator<E> iterator()
 *   public void forEach(Consumer<? super E> action)
 * 3.使用场景
 *   适合用于查询较多的场景，例如：条件分页查询列表
 *
 * 思考：
 * 1.ArrayList  迭代方式
 * 2.ArrayList  如何实现扩容的？
 */
public class ArrayListDemo {

    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("A");
        list.add("B");
        list.set(1 ,"bbb");
        list.add("C");
        list.add("D");

        System.out.println(list.get(0));

        //Iterator 迭代器
        Iterator<String> iterator = list.iterator();
        while (iterator.hasNext()) {
            String s = iterator.next();
            System.out.println("s = "+s);
        }

        //forEach(Consumer<? super E> action)
        list.forEach(System.out::println);
    }

}
